Android 11 中的存储机制更新
Android 10 引入了对外部存储权限的更改,旨在更好地保护用户数据以及降低应用的存储空间。Android 11 开发者预览版里加入了更多改进,以帮助开发者更好地适应这些权限修改。
Android 10 所带来的关于存储上的变更遵循了以下三个基本原则
更好的从属性: 系统知道哪些文件属于哪些应用,这可以让用户更方便地管理他们的文件。当应用被卸载后,除非用户需要,否则应用之前所创建的文件也不应该保留在设备上; 保护应用数据: 当一个应用将它所属的文件写入外部存储时,这些文件是不应该被其他应用所访问的; 保护用户数据: 当用户下载了一些文件,比如带有敏感信息的邮件附件,这些文件应该对其他应用不可见。
目标 API 级别 (Target SDK Level) 设定为 Android 10 的应用无需请求 Storage 权限,就可以使用自己的外部存储目录并管理媒体集合 (音频、视频、图片和下载数据)。Storage 权限仅允许读取其他应用共享的音频、视频和图片集合,但并不允许访问非本应用创建的下载数据。在 Android 10 里唯一一种访问其他应用创建的非媒体文件的途径是使用存储访问框架 (Storage Access Framework) 提供的文档选择器。
在 Android 11 中,我们会通过下述的几点来继续优化分区存储 (Scoped Storage) 的开发者体验。
Android 10 对外部存储权限行为 https://developer.android.google.cn/training/data-storage#scoped-storage 请求 (READ_EXTERNAL_STORAGE) 存储权限 https://developer.android.google.cn/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE 它所属的文件 https://developer.android.google.cn/training/data-storage/app-specific 存储访问框架 (Storage Access Framework) https://developer.android.google.cn/guide/topics/providers/document-provider
改进媒体存储
可以再次使用 https://developer.android.google.cn/preview/privacy/storage#media-files-raw-paths 修改或者删除多个媒体文件 https://developer.android.com/preview/privacy/storage#media-file-access
对 Storage Access Framework 的更新
当我们对广泛的存储访问进行限制后,一些开发者试图使用 Storage Access Framework (SAF) 遍历整个文件系统。但是,SAF 并不适用于广泛地访问共享存储内容。因此,我们对其进行了更新,限制了它对某些路径的可见性。
在 Android 11 中,将不再允许用户授权访问 Downloads 的根目录、每个可用 SD 卡的根目录以及其它应用的目录。应用仍然可以通过 Storage Access Framework API 或者文件选择器来帮助用户从共享存储中选取个别文件。
对其进行了更新
https://developer.android.google.cn/preview/privacy/storage#file-directory-restrictions
针对文件管理应用的特殊权限
针对文件管理器以及一些备份类的应用,它们需要获得共享存储的更广泛的访问权限。Android 11 里将会引入一个特别的权限叫做 MANAGE_EXTERNAL_STORAGE,该权限将授权读写所有共享存储内容,这也将同时包含非媒体类型的文件。但是获得这个权限的应用还是无法访问其他应用的应用专属目录 (app-specific directory),无论是外部存储还是内部存储。
文件管理器 —— 该类应用的主要功能是管理文件; 备份和恢复 —— 该类应用需要访问大批量的文件 (比如切换设备的时候进行数据迁移,或者将数据备份到云端)。
如果您的应用需要访问单个文件,比如文字处理应用,则应该使用 Storage Access Framework (SAF)。
在此政策更新正式上线 Google Play 之前,我们希望向您了解您的应用在这方面的具体需求,请扫描下面二维码填写问卷向我们提出反馈:
调查问卷 https://goo.gle/android11-survey-storage-cn
腾讯视频链接
https://v.qq.com/x/page/d3026c1bpr3.html
Bilibili 视频链接
https://www.bilibili.com/video/av77198618/
issues tracker https://issuetracker.google.com/issues/new?component=190602&template=1408010
想了解更多 Android 内容?
在公众号首页发送关键词 "Android",获取相关历史技术文章;
在公众号首页发送关键词 "ADS",获取开发者峰会演讲中文字幕视频;
还有更多疑惑?欢迎点击菜单 "联系我们" 反馈您在开发过程中遇到的问题。
推荐阅读